<?php

require CAMINHO_SERVIDOR.'conexao.php';
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of amigoDAO
 *
 * @author Fernando
 */
class amigoDAO {

    private $con;

    function __construct() {
        self::setCon(conectar());
        mysql_query('SET CHARACTER SET utf8');
    }

    public function getCon() {
        return $this->con;
    }

    public function setCon($con) {
        $this->con = $con;
    }

    public function fecharConexao() {
        desconectar(self::getCon());
    }

    function executaQuery($query) {
        return mysql_query($query, self::getCon());
    }

    function executaQueryAll($query) {
        $posts = array();
        $result = mysql_query($query, self::getCon());

        if (mysql_num_rows($result)) {
            while ($post = mysql_fetch_assoc($result)) {
                $posts[] = $post;
            }
        }

        return $posts;
    }

    function executaQueryRow($query) {
        $result = mysql_query($query, self::getCon());
        return mysql_fetch_assoc($result);
    }

    function meusAmigosPendentes($id_user) {
        $query = "SELECT distinct(usu.id_user_facebook) as id_face_amigo_pendente FROM tb_amigos_pendentes ap INNER JOIN tb_usuario usu ON usu.id_usuario=ap.id_amigo_pendente WHERE ap.id_usuario=" . $id_user;
        return self::executaQueryAll($query);
    }

    function addComoAmigoBolao($id_usuario, $id_usuario_amigo) {
        $query = "INSERT INTO tb_amigos (id_usuario,id_usuario_amigo) VALUES (" . $id_usuario . ", " . $id_usuario_amigo . ")";
        $result = self::executaQuery($query);

        if ($result) {
            $query = "DELETE FROM tb_amigos_pendentes WHERE (id_usuario=" . $id_usuario_amigo . " AND id_amigo_pendente=" . $id_usuario . ") OR (id_usuario=" . $id_usuario . " AND id_amigo_pendente=" . $id_usuario_amigo . ")";
            $result = self::executaQuery($query);
        }
        return $result;
    }

    function existeAmigo($id_user, $id_amigo_pendente) {
        $query = "SELECT id_amizade FROM tb_amigos WHERE (id_usuario=" . $id_amigo_pendente . " AND id_usuario_amigo=" . $id_user . ") OR (id_usuario=" . $id_user . " AND id_usuario_amigo=" . $id_amigo_pendente . ")";
        $result = self::executaQueryRow($query);

        return $result["id_amizade"];
    }

    function existeDesafio($id_user, $id_amigo_pendente) {
        $query = "SELECT id_amizade_pendente FROM tb_amigos_pendentes WHERE id_usuario = " . $id_amigo_pendente . " AND id_amigo_pendente = " . $id_user;
        $result = self::executaQueryRow($query);
        return $result["id_amizade_pendente"];
    }

    function seJaDesafiei($id_user, $id_amigo_pendente) {
        $query = "SELECT id_amizade_pendente FROM tb_amigos_pendentes WHERE id_usuario = " . $id_user . " AND id_amigo_pendente = " . $id_amigo_pendente;
        $result = self::executaQueryRow($query);

        return $result["id_amizade_pendente"];
    }

    function desafiarAmigo($id_user, $id_amigo_pendente) {
        $query = "INSERT INTO tb_amigos_pendentes (id_usuario, id_amigo_pendente) VALUES ('" . $id_user . "', '" . $id_amigo_pendente . "' ) ";
        $result = self::executaQuery($query);
        if ($result) {
            $query = "INSERT INTO tb_notificacao_amigos (id_usuario, ult_data_notificacao_amigos_pen) VALUES ('" . $id_amigo_pendente . "', CURRENT_TIMESTAMP()) ON DUPLICATE KEY UPDATE ult_data_notificacao_amigos_pen = CURRENT_TIMESTAMP()";
            $result = self::executaQuery($query);
        }

        return $result;
    }

    function deleteDesafiosPendentesByUsuario($id_user) {
        $query = "DELETE FROM tb_amigos_pendentes WHERE id_usuario=" . $id_user;
        $result = self::executaQuery($query);

        return $result;
    }

    function selecionaIdsAllUserFacebook() {
        $query = "SELECT distinct(usu.id_user_facebook) as id_usuario_face FROM tb_usuario usu WHERE usu.id_user_facebook IS NOT NULL";
        $result = self::executaQueryAll($query);
        return $result;
    }

    function pegaIdUserByIdFace($idFace) {
        if (!empty($idFace)) {
            //PEGA ID USUARIO
            $query = "SELECT id_usuario FROM tb_usuario WHERE id_user_facebook = " . $idFace;
            $result = self::executaQueryRow($query);
            return $result["id_usuario"];
        } else {
            return "";
        }
    }

    //appCountRegistro
    function getDatasNotificacao($id_usuario) {
        $query = "SELECT ult_data_notificacao_amigos_pen as ult_data,ult_data_acao_not_amigos_pen as ult_data_acao,ult_data_notificacao FROM tb_notificacao_amigos WHERE id_usuario=" . $id_usuario;
        $result = self::executaQueryRow($query);
        return $result;
    }

    function getCountAmigosPendentes($id_usuario) {
        $query = "SELECT COUNT(usu.id_usuario) as total FROM tb_amigos_pendentes amp "
                . "INNER JOIN tb_usuario usu ON usu.id_usuario = amp.id_usuario WHERE amp.id_usuario<>" . $id_usuario . " "
                . "AND amp.id_amigo_pendente = " . $id_usuario;
        $result = self::executaQueryRow($query);
        return $result;
    }

    function getIdsFaceAmigosAtuais1($id_usuario) {
        $query = "SELECT usu.id_user_facebook FROM tb_amigos am "
                . "INNER JOIN tb_usuario usu ON usu.id_usuario = am.id_usuario_amigo WHERE am.id_usuario_amigo <>" . $id_usuario . " "
                . "AND am.id_usuario = " . $id_usuario;
        $result = self::executaQueryAll($query);
        return $result;
    }

    function getIdsFaceAmigosAtuais2($id_usuario) {
        $query = "SELECT usu.id_user_facebook FROM tb_amigos am "
                . "INNER JOIN tb_usuario usu ON usu.id_usuario = am.id_usuario WHERE am.id_usuario <>" . $id_usuario . " "
                . "AND am.id_usuario_amigo = " . $id_usuario;
        $result = self::executaQueryAll($query);
        return $result;
    }

    function gravaDataNotificacaoByUser($id_usuario) {
        $query = "INSERT INTO tb_notificacao_amigos (id_usuario, ult_data_notificacao) VALUES ('" . $id_usuario . "', CURRENT_TIMESTAMP()) ON DUPLICATE KEY UPDATE ult_data_notificacao = CURRENT_TIMESTAMP()";
        self::executaQuery($query);
    }

    function getCountPontosByUsuarioByCampeonato($id_usuario, $id_campeonato) {
        $query = "SELECT SUM(p.pontos) as total FROM tb_pontuacao p 
            INNER JOIN tb_usuario usu ON usu.id_usuario=p.id_usuario 
            INNER JOIN tb_apostas a ON a.id_aposta=p.id_aposta 
            INNER JOIN tb_jogos j ON j.id_jogo=a.id_jogo 
            INNER JOIN tb_campeonato c ON c.id_campeonato=j.id_campeonato WHERE c.id_campeonato=" . $id_campeonato . " AND usu.id_usuario=" . $id_usuario;
        $result = self::executaQueryRow($query);
        return $result;
    }

    function aceitarDesafio($id_usuario, $id_usuario_amigo) {
        $query = "INSERT INTO tb_amigos (id_usuario,id_usuario_amigo) VALUES (" . $id_usuario . ", " . $id_usuario_amigo . ")";
        $result = self::executaQuery($query);

        if ($result) {
            $query = "DELETE FROM tb_amigos_pendentes WHERE id_usuario=" . $id_usuario_amigo . " AND id_amigo_pendente=" . $id_usuario;
            $result = self::executaQuery($query);
        }
        return $result;
    }

    function recusarDesafio($id_usuario, $id_usuario_amigo) {
        $query = "DELETE FROM tb_amigos_pendentes WHERE (id_usuario=" . $id_usuario . " AND id_amigo_pendente=" . $id_usuario_amigo . ") OR (id_usuario=" . $id_usuario_amigo . " AND id_amigo_pendente=" . $id_usuario . ")";
        $result = self::executaQuery($query);
        return $result;
    }

    function excluirAmigo($id_usuario, $id_usuario_amigo) {
        $query = "DELETE FROM tb_amigos WHERE (id_usuario=" . $id_usuario . " AND id_usuario_amigo=" . $id_usuario_amigo . ") OR (id_usuario=" . $id_usuario_amigo . " AND id_usuario_amigo=" . $id_usuario . ")";
        $result = self::executaQuery($query);
        return $result;
    }

    function gravarNovoUsuarioFacebook($id_user_face, $nome, $email) {
        $query = "INSERT INTO tb_usuario (id_user_facebook,nome,login) VALUES('" . $id_user_face . "','" . $nome . "','" . $email . "')";
        $result = self::executaQuery($query);
        if ($result) {
            $result = self::pegaIdUserByIdFace($id_user_face);
        } else {
            $result = 0;
        }

        return $result;
    }

}
